package com.lanchetech.user.service;


import com.lanchetech.bean.request.*;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.response.SpuResp;
import com.lanchetech.bean.vo.*;
import com.lanchetech.entity.*;
import com.lanchetech.user.config.ReturnPayInfoVO;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;


public interface ShopService {

    ResultData<BasePageResp<Shop>> getNearbyShopPage(PageReq req);

    ResultData<ShopDetailVO> getShopDetail(User user, Long id);

    ResultData<Shop> getShop(Long id);

    BaseResp editAppointmentSetting(AppointmentSetting req);

    ResultData<BasePageResp<AppointmentVO>> getAppointmentPage(PageReq req);

    ResultData<AppointmentByDayVO> getAppointmentByDay(Date date, Long shopId);

    ResultData<ReturnPayInfoVO> editAppointment(User user, Appointment req, HttpServletRequest httpServletRequest);

    String appointmentOrderNotify(String xmlData);

    ResultData<BasePageResp<AppointmentSettingVO>> getAppointmentSettingPage(User user, PageReq req);

    BaseResp cancelAppointment(Long id);

    String appointmentRefundNotify(String xmlData);

    ResultData<AppointmentVO> getAppointmentByHashId(String hashId);

    ResultData<AppointmentVO> getAppointmentDetail(Long id);

    BaseResp verifyConfirmAppointment(String hashId);

    BaseResp editActivityRegister(ActivityRegister activityRegister);

    BaseResp deleteActivityRegister(Long id);

    ResultData<BasePageResp<ActivityRegisterVO>> getActivityRegisterPage(PageReq req);

    ResultData<ActivityRegister> getActivityRegisterDetail(Long id);

    ResultData<List<IndustryIdAndNameVO>> getIndustryFirstList(User user);

    ResultData<List<IndustryIdAndNameVO>> getIndustrySecondList(PageReq req);

    ResultData<List<StatisticsVO>> getSpuAppointmentStatistics(Long spuId);

    ResultData<BasePageResp<Shop>> getMyRecommendShopPage(PageReq req);

    ResultData<MsgUser> getStoreMsgUser(Long shopId, Long msgUserId);

    ResultData<BasePageResp<BossVO>> getBossShopPage(PageReq req);

    BaseResp switchShop(Long shopId);

    ResultData<BasePageResp<ShopAnnouncementVO>> getShopAnnouncementPage(ShopAnnouncementPageReq req);

    ResultData<ShopAnnouncementVO> getShopAnnouncementDetail(Long id);

    ResultData<BasePageResp<BossInviteShopVO>> getBossInviteShopPage(BossInviteShopReq req);

    ResultData<BossInviteStatisticsVO> getBossInviteStatistics(User user);

    ResultData<List<UserCommissionVO>> getBossInviteCommissionList(User user);

    ResultData<List<BossInviteShopVO>> getBossInviteShopList(User user);

    ResultData<BasePageResp<Shop>> getShopPage(PageReq req);

    ResultData<BasePageResp<SpuResp>> getSpuHomePage(SpuPageReq req, User user);

    ResultData<BasePageResp<FlashSaleSpuVO>> getSpuActivityRank(SpuPageReq req);

    ResultData<List<Category>> getHotWords(Long shopId);
}